# 使用xpath进行解析HTML内容 需要先进行安装pip install lxml
from lxml import etree
xml="""
<book>
     <id>1</id>
     <name>野花遍地⾹</name>
     <price>1.23</price>
     <nick>臭⾖腐</nick>
     <author>
         <nick class="joy">周杰伦</nick>
         <nick class="jolin">蔡依林</nick>
         <nick id="xzq">薛之谦</nick>
         <nick id="syz">孙燕姿</nick>
         <div>
             <span>
                 <nick>刘亦菲</nick>
             </span>
         </div>                 
         <span>
             <nick>迪丽热巴</nick>
         </span>
        <div>
             <nick>杨幂</nick>
         </div>
     </author>
     <partner>
         <nick id="ppc">刘诗诗</nick>
         <nick id="ppbc">唐嫣</nick>
     </partner>
</book>
"""
# XML方法可以即系XML的相关内容
tree=etree.XML(xml)
# 表示找到book下面的author
result=tree.xpath("/book/author")
# 表示找到book下面的author下面的nick标签
result2=tree.xpath("/book/author/nick")
# 表示找到book下面的author下面的nick标签中的文本内容
result3=tree.xpath("/book/author/nick/text()")
#//表示后代
result4=tree.xpath("/book/author//nick/text()")
# *表示通配符 表示任意标签
result5=tree.xpath("/book/author/*/nick/text()")
print(result5)
# parse方法可以用于加载一个文件，进行解析操作
tree2=etree.parse("首页.html")
result6=tree2.xpath("/html/body/ul/li/a/text()")
# 可以通过下标的方法进行取出对应位置的元素，下标从1开始
result7=tree2.xpath("/html/body/ul/li[1]/a/text()")
# 使用@表示可以获取元素的属性
result8=tree2.xpath("/html/body/ul/li/a/@href")
# 获取指定属性对应的标签中的文本
result9=tree2.xpath("/html/body/ol/li/a[@href='feiji']/text()")

# 可以使用抓包工具，在网页上右键点击检查（F12）选中你要选择的元素，右键copy xpath即可
# /html/body/ul/li[1]/a
result10=tree2.xpath("/html/body/ul/li[1]/a/text()")
print(result9)

result11=tree2.xpath("/html/body/ul/li")  #获取所有的li标签
print("华丽的分割线")
# 此时的item表示每一个li标记
for item in result11:
    #     通过li标记进一步查找a标签 ./表示退回上一步（指向到li标签后，在向下寻找）
    print(item.xpath("./a/text()"))


